home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / stdwin / Tools / byteswap.c next >
Text File  |  1995-12-21  |  1KB  |  56 lines

  1. /* Byte-swap an array of short ints (assuming a short is 2 8-bit bytes). */
  2.  
  3. shortswap(data, len)
  4.     register short *data;
  5.     register int len;
  6. {
  7.     while (--len >= 0) {
  8.         register /*short*/ x= *data;
  9.         *data++= ((x>>8) & 0xff) | ((x&0xff) << 8);
  10.     }
  11. }
  12.  
  13. /* Byte-swap an array of long ints (assuming a long is 4 8-bit bytes). */
  14.  
  15. longswap(data, len)
  16.     register long *data;
  17.     register int len;
  18. {
  19.     while (--len >= 0) {
  20.         register long x= *data;
  21.         *data++=    ((x>>24) & 0x00ff) |
  22.                 ((x>> 8) & 0xff00) |
  23.                 ((x&0xff00) <<  8) |
  24.                 ((x&0x00ff) << 24);
  25.     }
  26. }
  27.  
  28. /* Byte-swapping versions of memcpy.
  29.    Note that the count is here a number of shorts or longs,
  30.    not a number of bytes.
  31.    This only works for short = 2 bytes, long = 4 bytes,
  32.    byte = 8 bits. */
  33.  
  34. swpscpy(dst, src, nshorts)
  35.     register short *dst, *src;
  36.     register int nshorts;
  37. {
  38.     while (--nshorts >= 0) {
  39.         register /*short*/ x= *src++;
  40.         *dst++ = ((x>>8) & 0xff) | ((x&0xff) << 8);
  41.     }
  42. }
  43.  
  44. swplcpy(dst, src, nlongs)
  45.     register long *dst, *src;
  46.     register int nlongs;
  47. {
  48.     while (--nlongs >= 0) {
  49.         register long x= *src++;
  50.         *dst++ =    ((x>>24) & 0x00ff) |
  51.                 ((x>> 8) & 0xff00) |
  52.                 ((x&0xff00) <<  8) |
  53.                 ((x&0x00ff) << 24);
  54.     }
  55. }
  56.